<html>
<script>

    // function counter(start) {
    //     let nextValue = Math.round(start);                  // 表示迭代器的一个私有状态
    //     return {next: function() {return nextValue++;}}     // 返回迭代器对象
    // }

    // let serialNumberGenerator = counter(1000);
    // let sn1 = serialNumberGenerator.next();                 // 1000
    // let sn2 = serialNumberGenerator.next();                 // 1001


    // // 这个函数返回一个迭代器，它可以迭代某个范围的整数
    // function rangeIter(first, last) {
    //     let nextValue = Math.ceil(first);
    //     return {
    //         next: function () {
    //             if (nextValue > last) { throw StopIteration; }
    //             return nextValue++;
    //         }
    //     };
    // }

    // // 使用这个范围迭代实现一次糟糕的迭代
    // let r = rangeIter(1, 5);
    // while (true) {
    //     try {
    //         console.log(r.next());
    //     } catch (e) {
    //         console.log(e);
    //         if (e == StopIteration) { break }    // 抛出StopIteration时退出循环
    //         else throw e;
    //     }
    // }

    // 针对一个整数范围定义一个生成器函数
    function range(min,max) {
        for(let i = Math.ceil(min); i<=max; i++) {
            yield;
        }
    }

    // 调用这个生成器函数已获得一个生成器，并对它进行遍历
    function fibonacci() {
        let x =0; y = 1;
        while(true) {
            yield y;
            [x, y] = [y,x+ y];
        } 
    }

    // 调用生成器函数已获得一个生成器
    f = fibonacci();
    // 将生成器当做迭代器，输出Fibonacci数列
    for(let i =0; i<10; i++) {
        console.log(f.next);
    }



</script>


<head>
    <title>放置文章标题</title>
</head>

<body>

</body>

</html>